package com.spillman.signtab.ui;

import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;

import com.spillman.signtab.R;
import com.spillman.signtab.fragments.ItemDetailFragment;
import com.spillman.signtab.fragments.ItemListFragment;
import com.spillman.signtab.fragments.PdfViewerFragment;
import com.spillman.signtab.fragments.SignatureDialogFragment;
import com.spillman.signtab.utils.FragmentCallbacks;
import com.spillman.signtab.utils.MyAdmin;

public class ItemListActivity extends FragmentActivity implements ItemListFragment.Callbacks, FragmentCallbacks {

	/**
	 * Whether or not the activity is in two-pane mode, i.e. running on a tablet
	 * device.
	 */

	public enum DialogId {
		SIGN_DIALOG
	}

	private boolean mTwoPane;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_item_list);

		if (findViewById(R.id.item_detail_container) != null) {
			// The detail container view will be present only in the
			// large-screen layouts (res/values-large and
			// res/values-sw600dp). If this view is present, then the
			// activity should be in two-pane mode.
			mTwoPane = true;

			// In two-pane mode, list items should be given the
			// 'activated' state when touched.
			((ItemListFragment) getSupportFragmentManager().findFragmentById(R.id.item_list))
					.setActivateOnItemClick(true);
		}

		// TODO: If exposing deep links into your app, handle intents here.
	}

	/**
	 * Callback method from {@link ItemListFragment.Callbacks} indicating that
	 * the item with the given ID was selected.
	 */
	@Override
	public void onItemSelected(String id) {
		if (mTwoPane) {
			// In two-pane mode, show the detail view in this activity by
			// adding or replacing the detail fragment using a
			// fragment transaction.
			Bundle arguments = new Bundle();
			arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
			ItemDetailFragment fragment = new ItemDetailFragment();
			fragment.setArguments(arguments);
			getSupportFragmentManager().beginTransaction().replace(R.id.item_detail_container, fragment).commit();

		} else {
			// In single-pane mode, simply start the detail activity
			// for the selected item ID.
			Intent detailIntent = new Intent(this, ItemDetailActivity.class);
			detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
			startActivity(detailIntent);
		}
	}

	@Override
	public void onFragmentResponse(Bundle data) {
		PdfViewerFragment fragment = PdfViewerFragment.newInstance();
		Bundle bundle = new Bundle();
		bundle.putString(PdfViewerFragment.EXTRA_PDFFILENAME,WelcomePage.DOCUMENT_LOCATION);
		fragment.setArguments(bundle);
		getSupportFragmentManager().beginTransaction().replace(R.id.item_detail_container, fragment).commit();
	}

	@Override
	public void clear() {
		Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.item_detail_container);
		getSupportFragmentManager().beginTransaction().remove(fragment).commit();
		DevicePolicyManager deviceManger = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
		boolean active = deviceManger.isAdminActive(new ComponentName(this, MyAdmin.class));
		if (active) {
			deviceManger.lockNow();
		}
	}

	@Override
	public void getSign() {
		Fragment fragment = SignatureDialogFragment.newInstance(R.string.sign_document, R.string.sign_here);
		getSupportFragmentManager().beginTransaction().add(fragment, DialogId.SIGN_DIALOG.name()).commit();
	}
}
